package com.yuyz.filter;

import com.alibaba.dubbo.rpc.Filter;
import com.alibaba.dubbo.rpc.Invocation;
import com.alibaba.dubbo.rpc.Invoker;
import com.alibaba.dubbo.rpc.Result;
import com.alibaba.dubbo.rpc.RpcException;
import com.yuyz.util.CountUtil;


public class TPMonitorFilter implements Filter {

    @Override
    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
        long start = System.currentTimeMillis();
        Result invoke = invoker.invoke(invocation);
        long end = System.currentTimeMillis();

        String methodName = invocation.getMethodName();
        if ("methodA".equals(methodName)) {
            // 方法A执行的时间放到数组中
            CountUtil.methodListA.add(end - start);
        } else if ("methodB".equals(methodName)) {
            // 方法B执行的时间放到数组中
            CountUtil.methodListB.add(end - start);
        } else if ("methodC".equals(methodName)) {
            // 方法C执行的时间放到数组中
            CountUtil.methodListC.add(end - start);
        }
        return invoke;
    }

}
